// xxx ignore not resolved classes; gradle can manage. fixes reproducible builds
import com.android.tools.profgen.ArtProfileKt
import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id "org.jetbrains.kotlin.plugin.parcelize"
}

android {
    compileSdk 33

    defaultConfig {
        applicationId "xyz.apiote.bimba.czwek"
        minSdk 21
        targetSdk 33
        versionCode 22
        versionName "3.1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        resourceConfigurations += ["en", "pl", "it"]
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = 17
        targetCompatibility = 17
        coreLibraryDesugaringEnabled true
    }
    buildFeatures {
        viewBinding true
    }
    namespace 'xyz.apiote.bimba.czwek'
    buildToolsVersion '33.0.1'
}

dependencies {
    implementation 'androidx.core:core-ktx:1.10.1'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0'
    implementation 'androidx.navigation:navigation-ui-ktx:2.6.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.core:core-splashscreen:1.0.1'
    implementation 'com.google.openlocationcode:openlocationcode:1.0.4'
    implementation 'org.osmdroid:osmdroid-android:6.1.16'
    implementation 'org.yaml:snakeyaml:2.0'
    implementation 'androidx.activity:activity:1.7.2'
    implementation 'com.google.openlocationcode:openlocationcode:1.0.4'
    implementation 'com.otaliastudios:zoomlayout:1.9.0'
    implementation 'dev.bandb.graphview:graphview:0.8.1'

    implementation project(path: ':fruchtfleisch')

    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'

    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

// note fixes reproducible builds
project.afterEvaluate {
    tasks.each { task ->
        if (task.name.startsWith("compile") && task.name.endsWith("ReleaseArtProfile")) {
            task.doLast {
                outputs.files.each { file ->
                    if (file.name.endsWith(".profm")) {
                        println("Sorting ${file} ...")
                        def version = ArtProfileSerializer.valueOf("METADATA_0_0_2")
                        def profile = ArtProfileKt.ArtProfile(file)
                        def keys = new ArrayList(profile.profileData.keySet())
                        def sortedData = new LinkedHashMap()
                        // xxx ignore not resolved classes; gradle can manage
                        Collections.sort keys, new DexFile.Companion()
                        keys.each { key -> sortedData[key] = profile.profileData[key] }
                        new FileOutputStream(file).with {
                            write(version.magicBytes$profgen)
                            write(version.versionBytes$profgen)
                            version.write$profgen(it, sortedData, "")
                        }
                    }
                }
            }
        }
    }
}